import abc

from infection_monkey.i_puppet import TargetHost


class IServiceExploiter(metaclass=abc.ABCMeta):
    @property
    @abc.abstractmethod
    def service_name(self) -> str:
        # Should have the name of the exploited service
        pass

    @staticmethod
    @abc.abstractmethod
    def trigger_exploit(payload: str, host: TargetHost, port: int) -> str:
        # Return the URL the exploit was attempted on
        raise NotImplementedError
